﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Loja.Banco;
using Loja.Controles.Aplicação;
using Loja.Aplicação;
using System.Collections;
using Loja.Padrao;

namespace Loja.Telas
{
    public partial class ConsultaCaixa : PadraoConsulta
    {
        private Controle controle;
        private DateTime dataValida;

        public ConsultaCaixa(Controle controle)
        {
            this.controle = controle;
            InitializeComponent();
        }

        new private void btnNovo_Click(object sender, EventArgs e)
        {
            CadastroCaixa form = new CadastroCaixa(controle);
            form.ShowDialog(this);
            pesquisar();
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            pesquisar();
        }

        private void btnAbrir_Click(object sender, EventArgs e)
        {
            Abrir();
        }

        private void pesquisar()
        {
            var caixas = controle.BuscaCaixa(new DateTime(dtInicio.Value.Year, dtInicio.Value.Month, dtInicio.Value.Day, 00, 00, 00), new DateTime(dtFim.Value.Year, dtFim.Value.Month, dtFim.Value.Day, 23, 59, 59));
            if (caixas == null)
            {

                dgDados.DataSource = null;

            }
            else
            {
                dgDados.DataSource = caixas;
            }
        }

        private void btFecharCaixa_Click(object sender, EventArgs e)
        {
            try
            {
                Int32 caixa_id = Int32.Parse(dgDados.CurrentRow.Cells[0].Value.ToString());
                if (caixa_id > 0)
                {
                    DialogResult dialogo = new DialogResult();
                    dialogo = MessageBox.Show("Deseja FECHAR o caixa selecionado?", "Fechamento do Caixa", MessageBoxButtons.YesNo);
                    if (dialogo.ToString() == "Yes")
                    {
                        string dataFechamento = Microsoft.VisualBasic.Interaction.InputBox("Data de Fechamento do Caixa", "Data de Fechamento:", DateTime.Now.ToString(), 700, 500);                        
                        if (ValidaData(dataFechamento))
                        {
                            controle.FecharCaixa(caixa_id,dataValida);                            
                            MessageBox.Show("Caixa Fechado com sucesso!");
                            pesquisar();
                        }
                        else
                        {                            
                            MessageBox.Show("Data Inválida!");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Caixa não selecionado!");
                }
            }
            catch
            {
                MessageBox.Show("Seleciona um registro válido!");
            }
        }

        public Boolean ValidaData(String data)
        {
            try
            {
                dataValida = Convert.ToDateTime(data);
                if (controle.VerificaDataFechamento(Int32.Parse(dgDados.CurrentRow.Cells[0].Value.ToString()), dataValida))
                    return true;
                else
                    return false;
            }
            catch
            {
                return false;
            }            
        }

        private void btAbrirCaixa_Click(object sender, EventArgs e)
        {
            try
            {
                Int32 caixa_id = Int32.Parse(dgDados.CurrentRow.Cells[0].Value.ToString());
                if (caixa_id > 0)
                {
                    DialogResult dialogo = new DialogResult();
                    dialogo = MessageBox.Show("Deseja ABRIR o caixa selecionado?", "Abertura do Caixa", MessageBoxButtons.YesNo);
                    if (dialogo.ToString() == "Yes")
                    {
                        if (controle.AbrirCaixaFechado(caixa_id))
                        {
                            MessageBox.Show("Caixa Aberto com sucesso!");
                            pesquisar();
                        }
                        else
                        {
                            MessageBox.Show("Não foi possível abrir o caixa selecionado!");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Caixa não selecionado!");
                }
            }
            catch
            {
                MessageBox.Show("Seleciona um registro válido!");
            }
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {

        }

        public void Abrir()
        {
            try
            {
                FormExtratoCaixa form = new FormExtratoCaixa(controle, Int32.Parse(dgDados.CurrentRow.Cells[0].Value.ToString()));
                form.ShowDialog(this);
                pesquisar();
            }
            catch
            {
                MessageBox.Show("Não foi encontrado caixa(s) para essa consulta!");
            }  
        }
    }
}
